<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <SCript>

    // var arr=[1,2,3,4,5,6];

// 构造reverse函数
        // 翻转数组
        // function array_reverse(arr){
        //     for(var i=0; i<parseInt(arr.length/2);i++){
        //         var temp=arr[arr.length-i-1];
        //         arr[arr.length-i-1]=arr[i];
        //         arr[i]=temp;
        //     }
        //     return arr;
        // }
        // array_reverse(arr);
        // console.log(arr);

        // parseInt取整，不会进位，利用中间位，将两边到中间的元素完成互换



// sort函数
    // 也会影响原数组，默认按照Unicode编码进行排序


            // 在sort()添加一个回调函数，来指定排序规则：

                // arr = [5,4,5,6,4,3,2,2,8];
                // arr.sort(function(a,b){
                //     if(a > b){
                //         return 1;
                //     }else if(a < b){
                //         return -1;
                //     }else{
                //         return 0;
                //     }
                // })
                // console.log(arr);

// 回调函数中需要定义两个形参，游览器将会分别使用数组中的元素作为实参去调用回调函数
// 游览器会根据回调函数的返回值来决定元素的顺序，如果返回值大于0，则会交互位置，如果返回值小于0，
// 则元素位置不变，如果返回一个0，也不交换位置，当a>b时，如果想要从小往大排，就返回1





                // arr = [5,4,5,6,4,3,2,2,8];
//                 arr.sort(function(a,b){
//                     return a - b;
//                 })
//                 console.log(arr);

// 升序排列：
//                 return a - b;

// 降序排列： 
//                 return b - a

// 更方便，直接使用，得出结果






// 构造sort函数：

    // function array_sort(arr, fn) {
    //         for (var i = 0; i < arr.length; i++) {
    //         for (var j = 0; j < arr.length - 1 - i; j++) {
    //             if (f n(arr[j],arr[j + 1]) >0 ) {
    //                                                         //  替换原理：       // if (arr[j]>arr[j+1] ) {          从小到大  arr[j]-arr[j+1]>0
    //                                                                          // if (arr[j]<arr[j+1] ) {           从大到小  arr[j+1]-arr[j]>0
    //             var temp = arr[j];
    //             arr[j] = arr[j + 1];
    //             arr[j + 1] = temp;
    //             }
    //         }
    //         }
    //     }





    //     array_sort(arr,function(a,b) {
    //         return a-b;
    //     })
    //     console.log(arr);




    // 字符排列方式
//     var arr=["cd","cc","f","e","h","d"];
//     arr.sort(function(a,b){
//         if(typeof a==="string" && typeof b==="string"){
//              if(a[0]!==b[0]) return a.charCodeAt(0)-b.charCodeAt(0);
//              else return a.charCodeAt(1)-b.charCodeAt(1);
//         }
        
//     })
//       console.log(arr);

// 当第一项不相等时返回的是第一项排列
// 当第一项相等时，再对比第二项进行排列
    
    
    
    
    // 随机排列：
    // var arr=[1,2,3,4,5,6,7,8,9,10,11,12,13,14];

    // arr.sort(function(){
    //     return Math.random()-0.5
    // })

    // console.log(arr);
    
    
    // Math.random是0-1之间随机的数字，减去0.5之后，可能会大于0，也可能会小于0，
    // 这就造成了，可能从大到小排列，也可能从小到大排列 
   
   

    // 随机选出10个0-100之间的整数，且不能重复
    // var arr=[];
    // while(arr.length<10){
    //     var n=parseInt(Math.random()*100);
    //     if(arr.indexOf(n)<0) arr.push(n);
    // }
    // console.log(arr);
   
//    先建立一个空数组，再创建100个随机数，由于length限定了长度，所以是10个，
//    如果没有查找到，则将数值放在数组中
   
   

// 另一种方法：
    // var arr=Array(100).fill(0).map(function(item,index){ return index});
    // arr.sort(function(){return Math.random()-0.5});
    // arr.length=10;
    // console.log(arr);
   
//    先创建一个数组，有100个元素，return index就会返回0-99，再利用乱序打乱
//    获取前10个元素
   
   
   
   
   
   
   </SCript>
</body>
</html>